<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>xxvethernet: Main Page</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">xxvethernet
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li class="current"><a href="index.html"><span>Overview</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('index.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">xxvethernet Documentation</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The Xilinx XXV Ethernet MAC driver component. This driver supports both XXV Ethernet core and USXGMII core on Zynq Ultrascale+ MPSoC. The MAC portion of USXMGII and XXV ethernet is similar. Speed supported for XXV Ethernet core is 10Gbps. Speed supported for USXGMII core is 1Gbps or 2.5Gbps.</p>
<p>For a full description of XXV Ethernet features, please see the hardware spec. This driver supports the following features:</p>
<ul>
<li>Access to host interface registers</li>
<li>Interfacing to target MCDMA device via application</li>
<li>Full duplex operation</li>
<li>Automatic PAD &amp; FCS insertion and stripping (programmable)</li>
<li>Jumbo frame support</li>
</ul>
<p>For full description of USXGMII features, please refer to hardware spec. In addition to the above MAC features, USXGMII core supports USXGMII PHY functionality. This driver supports the same.</p>
<h2>Driver Description</h2>
<p>The device driver enables higher layer software (e.g., an application) to configure an Xxv Ethernet device. It is intended that this driver be used in cooperation with another MCDMA driver for data communication..</p>
<h2>Initialization &amp; Configuration</h2>
<p>The <a class="el" href="struct_x_xxv_ethernet___config.html" title="This typedef contains configuration information for a Xxv Ethernet device. ">XXxvEthernet_Config</a> structure can be used by the driver to configure itself. This configuration structure is typically created by the tool-chain based on hardware build properties.</p>
<p>The driver instance can be initialized using the XXvEthernet_CfgInitialze() routine.</p>
<h2>Interrupts and Asynchronous Callbacks</h2>
<p>The driver has no dependencies on the interrupt controller. It provides no interrupt handlers. The application/OS software should set up its own interrupt handlers if required based on the target DMA device.</p>
<h2>Device Reset</h2>
<p>When an Xxv Ethernet device is connected up to a MCDMA core in hardware, reset is controlled by the latter. If a reset is performed, the calling code should also reconfigure and reapply the proper settings in the Xxv Ethernet device. When an Xxv Ethernet device reset is required, <a class="el" href="group__xxvethernet.html#gabd5dad43d5d82fd52bd8b9101f50a96e" title="XXxvEthernet_Reset does not perform a soft reset of the XxvEthernet core. ">XXxvEthernet_Reset()</a> should be utilized. For GT/Serdes reset, refer to the example.</p>
<h2>Transferring Data</h2>
<p>The Xxv Ethernet core by itself is not capable of transmitting or receiving data in any meaningful way. Instead the Xxv Ethernet device needs to be connected to a FIFO or DMA core in hardware, currently MCDMA is supported.</p>
<p>This Xxv Ethernet driver is modeled in a similar fashion where the application code or O/S adapter driver needs to make use of a separate MCDMA driver in connection with this driver to establish meaningful communication over Ethernet.</p>
<h2>PHY Communication</h2>
<p>XXV Ethernet core: This device supports clause 49 10GBaseKR at the moment. There is no autonegotiation enabled by default - the autonegotiation speed is limited to 10G.</p>
<p>USXGMII core: This driver supports USXMGII autonegotiation at 1G and and 2.5G. The core also supports 10G and 5G speeds but it is not validated with this driver. There is also an option to bypass autonegotiation.</p>
<h2>Asserts</h2>
<p>Asserts are used within all Xilinx drivers to enforce constraints on argument values. Asserts can be turned off on a system-wide basis by defining, at compile time, the NDEBUG identifier. By default, asserts are turned on and it is recommended that users leave asserts on during development. For deployment use -DNDEBUG compiler switch to remove assert code.</p>
<dl class="section note"><dt>Note</dt><dd></dd></dl>
<p>Xilinx drivers are typically composed of two components, one is the driver and the other is the adapter. The driver is independent of OS and processor and is intended to be highly portable. The adapter is OS-specific and facilitates communication between the driver and an OS. <br/>
<br/>
 This driver is intended to be RTOS and processor independent. Any needs for dynamic memory management, threads or thread mutual exclusion, or cache control must be satisfied by the layer above this driver.</p>
<pre>
MODIFICATION HISTORY:</pre><pre>Ver   Who  Date     Changes
</p>
<hr/>
<p>
1.0   hk   6/16/17  First release
      hk   2/15/18  Add support for USXGMII
1.1   mj   3/30/18  Add Macro <a class="el" href="group__xxvethernet.html#ga3344d63068c5bd9e67e0e978aa5f519a" title="XXxvEthernet_IsMcDma reports if the device is currently connected to MCDMA. ">XXxvEthernet_IsMcDma(InstancePtr)</a> to check
                    McDma is connected or not.
1.4   rsp  05/08/20 Include sleep.h header
1.6     sk   02/18/21 Use UINTPTR instead of u32 for XxvDevBaseAddress
                      variable.
</pre> </div></div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
